<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" href="css/layui.css" media="all">
		<link rel="stylesheet" href="css/bootstrap.css">
	</head>
	<body>
		<div id="firstVue" style="padding: 10px;">

			<div class="layui-row u-flex u-row-center">
				<div class="layui-col-md12">
					<span style="font-size: 16px;font-weight: bold;">班级每个学期的及格人数</span>
					<div style="width: 100%;height: 100%;" id="aggregate"></div>
				</div>
			</div>

			<div class="layui-row">
				<div class="layui-col-md3">
					<span style="font-size: 16px;font-weight: bold;">各科及格比例</span>
					<div style="width: 100%;height: 100%;" id="cake"></div>
				</div>
				<div class="layui-col-md3">
					<span style="font-size: 16px;font-weight: bold;">分段</span>
					<div style="width: 100%;height: 100%;" id="strip"></div>
				</div>
				<div class="layui-col-md3">
					<span style="font-size: 16px;font-weight: bold;">科目平均分</span>
					<div style="width: 100%;height: 100%;" id="strip2"></div>
				</div>
				<div class="layui-col-md3">
					<span style="font-size: 16px;font-weight: bold;">班级合格率</span>
					<div style="width: 100%;height: 100%;" id="strip3"></div>
				</div>
			</div>

		</div>

	</body>

	<script src="https://gw.alipayobjects.com/os/lib/antv/f2/3.7.0/dist/f2.min.js"></script>
	<script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.data-set-0.10.1/dist/data-set.min.js"></script>

	<script src="js/g2.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/Print.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/xlsx.full.min.js" type="text/javascript" charset="utf-8"></script>

	<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
	<script src="js/jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
	<script src="layui.js" charset="utf-8"></script>
	<script src="js/public.js" type="text/javascript" charset="utf-8"></script>

	<script type="text/javascript">
		var myVue = new Vue({
			el: "#firstVue",
			data: {},
			mounted: function() {
				this.$nextTick(() => {

				})
			},
			methods: {}
		})



		$(function() {

			myVue.Data = $v.$pall.get('vue.Data').Data
			myVue.xoData = $v.$pall.get('vue.Data').xoData

			myVue.Data = xo(myVue.Data)

			console.log(myVue)

			{
				let data = [] 
				let i2 = 0
				for (let i in myVue.xoData.科目分段数) {
					i2++
					data.push({
						item: i,
						count: (parseInt(myVue.xoData.科目分段数[i].及格) + parseInt(myVue.xoData.科目分段数[i].一般) + parseInt(myVue
							.xoData.科目分段数[i].优秀) + parseInt(myVue.xoData.科目分段数[i].异常优秀)),
						percent: (parseInt(myVue.xoData.科目分段数[i].及格) + parseInt(myVue.xoData.科目分段数[i].一般) + parseInt(myVue
							.xoData.科目分段数[i].优秀) + parseInt(myVue.xoData.科目分段数[i].异常优秀)) / 100
					})
				}
				// var data = [{
				// 	item: '事例一',
				// 	count: 40,
				// 	percent: 0.4
				// }, {
				// 	item: '事例二',
				// 	count: 21,
				// 	percent: 0.21
				// }, {
				// 	item: '事例三',
				// 	count: 17,
				// 	percent: 0.17
				// }, {
				// 	item: '事例四',
				// 	count: 13,
				// 	percent: 0.13
				// }, {
				// 	item: '事例五',
				// 	count: 9,
				// 	percent: 0.09
				// }];
				var chart = new G2.Chart({
					container: 'cake',
					forceFit: true,
					// height: window.innerHeight
				});
				chart.source(data, {
					percent: {
						formatter: function formatter(val) {
							val = val * 100 + '%';
							return val;
						}
					}
				});
				chart.coord('theta', {
					radius: 0.75
				});
				chart.tooltip({
					showTitle: false,
					itemTpl: '<li><span style="background-color:{color};" class="g2-tooltip-marker"></span>{name}: {value}</li>'
				});
				chart.intervalStack().position('percent').color('item').label('percent', {
					formatter: function formatter(val, item) {
						return item.point.item + ': ' + val;
					}
				}).tooltip('item*percent', function(item, percent) {
					percent = percent * 100 + '%';
					return {
						name: item,
						value: percent
					};
				}).style({
					lineWidth: 1,
					stroke: '#fff'
				});
				chart.render();
			}

			{
				let data = [] 
				for (let i in myVue.xoData.班级) {
					for (let i2 in myVue.xoData.班级[i]) {
						if (!i2 || i2 == 'null') continue
						data.push({
							country: i,
							year: i2,
							value: (parseInt(myVue.xoData.班级[i][i2].及格) + parseInt(myVue.xoData.班级[i][i2].一般) + parseInt(myVue.xoData.班级[i][i2].优秀) + parseInt(myVue.xoData.班级[i][i2].异常优秀))
						})
					}
				}
				console.log(data)
				var dv = new DataSet.View().source(data).transform({
					type: 'aggregate',
					fields: ['value', 'value'],
					operations: ['min', 'max'],
					as: ['min', 'max'],
					groupBy: ['country'],
					orderBy: ['year']
				}).rows;

				data = new DataSet.View().source(data).transform({
					type: 'sort-by',
					field: 'year',
					orderBy: 'ASC'
				});
				var valueMap = {};
				var chart = new G2.Chart({
					container: 'aggregate',
					forceFit: true,
					// height: window.innerHeight,
					padding: [10, 200, 50, 50]
				});
				chart.source(data);
				chart.legend({
					attachLast: true
				});
				chart.line().position('year*value').color('country').size('country', function(country) {
					if (country === 'China') return 5;
					return 2;
				}).label('country*value*year', function(country, value, year) {
					var result = null;
					for (var i = 0; i < dv.length; i++) {
						if (dv[i].country === country) {
							if (dv[i].min === value && !valueMap[country + 'min']) {
								valueMap[country + 'min'] = year;
								result = value;
								break;
							}

							if (dv[i].max === value && !valueMap[country + 'max']) {
								valueMap[country + 'max'] = year;
								result = value;
								break;
							}
						}
					}
					return result;
				}, {
					labelLine: false,
					offset: 10,
					textStyle: {
						stroke: '#fff',
						lineWidth: 2
					}
				}).style({
					lineCap: 'round'
				});
				chart.point().position('year*value').color('country').style({
					lineWidth: 2
				}).size('country*value*year', function(country, value, year) {
					if (valueMap[country + 'min'] === year || valueMap[country + 'max'] ===
						year) {
						return 3;
					}
					return 0;
				});
				chart.render();
			}


			// {
			// 	let data = []
			// 	{
			// 		let i2 = 0
			// 		for (let i in myVue.xoData.分段数) {
			// 			i2++
			// 			data.push({
			// 				company: i,
			// 				type: myVue.xoData.科目分段数[i].及格,
			// 				value: myVue.xoData.科目分段数[i].及格 / 100
			// 			})
			// 		}
			// 	}
			// 	var data = [{
			// 		company: 'Apple',
			// 		type: '整体',
			// 		value: 30
			// 	}, {
			// 		company: 'Facebook',
			// 		type: '整体',
			// 		value: 35
			// 	}, {
			// 		company: 'Google',
			// 		type: '整体',
			// 		value: 28
			// 	}, {
			// 		company: 'Apple',
			// 		type: '非技术岗',
			// 		value: 40
			// 	}, {
			// 		company: 'Facebook',
			// 		type: '非技术岗',
			// 		value: 65
			// 	}, {
			// 		company: 'Google',
			// 		type: '非技术岗',
			// 		value: 47
			// 	}, {
			// 		company: 'Apple',
			// 		type: '技术岗',
			// 		value: 23
			// 	}, {
			// 		company: 'Facebook',
			// 		type: '技术岗',
			// 		value: 18
			// 	}, {
			// 		company: 'Google',
			// 		type: '技术岗',
			// 		value: 20
			// 	}, {
			// 		company: 'Apple',
			// 		type: '技术岗',
			// 		value: 35
			// 	}, {
			// 		company: 'Facebook',
			// 		type: '技术岗',
			// 		value: 30
			// 	}, {
			// 		company: 'Google',
			// 		type: '技术岗',
			// 		value: 25
			// 	}];

			// 	var chart = new G2.Chart({
			// 		container: 'strip',
			// 		forceFit: true,
			// 		// height: window.innerHeight,
			// 		padding: 'auto'
			// 	});
			// 	chart.source(data);
			// 	chart.scale('value', {
			// 		alias: '占比（%）',
			// 		max: 75,
			// 		min: 0,
			// 		tickCount: 4
			// 	});
			// 	chart.axis('type', {
			// 		label: {
			// 			textStyle: {
			// 				fill: '#aaaaaa'
			// 			}
			// 		},
			// 		tickLine: {
			// 			alignWithLabel: false,
			// 			length: 0
			// 		}
			// 	});

			// 	chart.axis('value', {
			// 		label: {
			// 			textStyle: {
			// 				fill: '#aaaaaa'
			// 			}
			// 		},
			// 		title: {
			// 			offset: 50
			// 		}
			// 	});
			// 	chart.legend({
			// 		position: 'top-center'
			// 	});
			// 	chart.interval().position('type*value').color('company').opacity(1).adjust([{
			// 		type: 'dodge',
			// 		marginRatio: 1 / 32
			// 	}]);
			// 	chart.render();
			// }


			{
				let data = [] 
				for (let i in myVue.xoData.分段数) {
					data.push({
						type: i,
						value: myVue.xoData.分段数[i],
					})
				}
				var sortType = 'positive';
				// var data = [{
				// 	type: '家具家电',
				// 	value: 34000
				// }, {
				// 	type: '粮油副食',
				// 	value: 25000
				// }, {
				// 	type: '生鲜水果',
				// 	value: 11000
				// }, {
				// 	type: '美容洗护',
				// 	value: 9000
				// }, {
				// 	type: '母婴用品',
				// 	value: 7000
				// }, {
				// 	type: '进口食品',
				// 	value: 6000
				// }, {
				// 	type: '食品饮料',
				// 	value: 4800
				// }, {
				// 	type: '家庭清洁',
				// 	value: 500
				// }];
				var chart = new G2.Chart({
					container: 'strip',
					forceFit: true,
					// height: window.innerHeight,
					padding: [20, 20, 30, 90]
				});
				chart.source(data, {
					value: {
						tickCount: 5
					}
				});
				chart.scale('value', {
					alias: '个'
				});
				chart.axis('type', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						}
					},
					tickLine: {
						alignWithLabel: false,
						length: 0
					}
				});
				chart.axis('value', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						},
						formatter: function formatter(text) {
							return text.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
						}
					},
					title: {
						offset: 70
					}
				});
				chart.tooltip({
					share: true
				});
				chart.guide().dataMarker({
					top: true,
					content: '因政策调整导致销量下滑',
					position: ['2014-01', 1750],
					style: {
						text: {
							fontSize: 13
						}
					},
					lineLength: 30
				});
				chart.interval().position('type*value').opacity(1);
				chart.render();
				$('.sort-button').click(function() {
					sortType = sortType === 'positive' ? 'negative' : 'positive';
					sortData(sortType);
					chart.repaint();
				});

				function sortData(sortType) {
					if (sortType === 'positive') {
						data.sort(function(a, b) {
							return b.value - a.value;
						});
					} else {
						data.sort(function(a, b) {
							return a.value - b.value;
						});
					}
				}
			}


			{
				let data = [] 
				data.push({
					type: '.',
					value: 0,
				})
				for (let i in myVue.xoData.科目平均分) {
					data.push({
						type: i,
						value: myVue.xoData.科目平均分[i],
					})
				}
				var sortType = 'positive';
				// var data = [{
				// 	type: '家具家电',
				// 	value: 34000
				// }, {
				// 	type: '粮油副食',
				// 	value: 25000
				// }, {
				// 	type: '生鲜水果',
				// 	value: 11000
				// }, {
				// 	type: '美容洗护',
				// 	value: 9000
				// }, {
				// 	type: '母婴用品',
				// 	value: 7000
				// }, {
				// 	type: '进口食品',
				// 	value: 6000
				// }, {
				// 	type: '食品饮料',
				// 	value: 4800
				// }, {
				// 	type: '家庭清洁',
				// 	value: 500
				// }];
				var chart = new G2.Chart({
					container: 'strip2',
					forceFit: true,
					// height: window.innerHeight,
					padding: [20, 20, 30, 90]
				});
				chart.source(data, {
					value: {
						tickCount: 5
					}
				});
				chart.scale('value', {
					alias: '分'
				});
				chart.axis('type', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						}
					},
					tickLine: {
						alignWithLabel: false,
						length: 0
					}
				});
				chart.axis('value', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						},
						formatter: function formatter(text) {
							return text.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
						}
					},
					title: {
						offset: 70
					}
				});
				chart.tooltip({
					share: true
				});
				chart.guide().dataMarker({
					top: true,
					content: '因政策调整导致销量下滑',
					position: ['2014-01', 1750],
					style: {
						text: {
							fontSize: 13
						}
					},
					lineLength: 30
				});
				chart.interval().position('type*value').opacity(1);
				chart.render();
				$('.sort-button').click(function() {
					sortType = sortType === 'positive' ? 'negative' : 'positive';
					sortData(sortType);
					chart.repaint();
				});

				function sortData(sortType) {
					if (sortType === 'positive') {
						data.sort(function(a, b) {
							return b.value - a.value;
						});
					} else {
						data.sort(function(a, b) {
							return a.value - b.value;
						});
					}
				}
			}

			{
				let data = [] 
				for (let i in myVue.xoData.班级合格数) {
					data.push({
						type: i,
						value: myVue.xoData.班级合格数[i],
					})
				}
				var sortType = 'positive';
				// var data = [{
				// 	type: '家具家电',
				// 	value: 34000
				// }, {
				// 	type: '粮油副食',
				// 	value: 25000
				// }, {
				// 	type: '生鲜水果',
				// 	value: 11000
				// }, {
				// 	type: '美容洗护',
				// 	value: 9000
				// }, {
				// 	type: '母婴用品',
				// 	value: 7000
				// }, {
				// 	type: '进口食品',
				// 	value: 6000
				// }, {
				// 	type: '食品饮料',
				// 	value: 4800
				// }, {
				// 	type: '家庭清洁',
				// 	value: 500
				// }];
				var chart = new G2.Chart({
					container: 'strip3',
					forceFit: true,
					// height: window.innerHeight,
					padding: [20, 20, 30, 90]
				});
				chart.source(data, {
					value: {
						tickCount: 5
					}
				});
				chart.scale('value', {
					alias: '分'
				});
				chart.axis('type', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						}
					},
					tickLine: {
						alignWithLabel: false,
						length: 0
					}
				});
				chart.axis('value', {
					label: {
						textStyle: {
							fill: '#aaaaaa'
						},
						formatter: function formatter(text) {
							return text.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
						}
					},
					title: {
						offset: 70
					}
				});
				chart.tooltip({
					share: true
				});
				chart.guide().dataMarker({
					top: true,
					content: '因政策调整导致销量下滑',
					position: ['2014-01', 1750],
					style: {
						text: {
							fontSize: 13
						}
					},
					lineLength: 30
				});
				chart.interval().position('type*value').opacity(1);
				chart.render();
				$('.sort-button').click(function() {
					sortType = sortType === 'positive' ? 'negative' : 'positive';
					sortData(sortType);
					chart.repaint();
				});

				function sortData(sortType) {
					if (sortType === 'positive') {
						data.sort(function(a, b) {
							return b.value - a.value;
						});
					} else {
						data.sort(function(a, b) {
							return a.value - b.value;
						});
					}
				}
			}


		})

		function xo(json) {
			let 课程总数 = 5
			let xoData = {
				个人总分: {},
				班级总分: {},
				班级总人数: {},
				专业总分: {},
				专业总人数: {},

				个人平均分: {},
				班级平均分: {},
				专业平均分: {},
				个人最高分: 0,
				个人最低分: 100,
				班级最高分: {},
				班级最低分: {},
				专业最高分: {},
				专业最低分: {},
				合格率: {},
				分段数: {},

				科目分段数: {},
				不重复总学号: [],
				班级: {},
				科目总分: {},
				科目总人数: {},
				科目平均分: {},
				班级合格数: {}
			}

			json.map((v, i) => {

				{
					let 已经添加学号 = false
					for (let i in xoData.不重复总学号) {
						if (i == v.学号) 已经添加学号 = true
					}
					if (!已经添加学号) xoData.不重复总学号.push(v.学号)
				}



				if (parseInt(xoData.个人总分[v.姓名])) {
					xoData.个人总分[v.姓名] += parseInt(v.分数)
				} else {
					xoData.个人总分[v.姓名] = 0 + parseInt(v.分数)
				}

				if (parseInt(xoData.班级总分[v.班级])) {
					xoData.班级总分[v.班级] += parseInt(v.分数)
				} else {
					xoData.班级总分[v.班级] = 0 + parseInt(v.分数)
				}

				if (parseInt(xoData.班级总人数[v.班级])) {
					xoData.班级总人数[v.班级] += 1
				} else {
					xoData.班级总人数[v.班级] = 1
				}

				if (parseInt(xoData.专业总分[v.专业])) {
					xoData.专业总分[v.专业] += parseInt(v.分数)
				} else {
					xoData.专业总分[v.专业] = 0 + parseInt(v.分数)
				}

				if (parseInt(xoData.专业总人数[v.专业])) {
					xoData.专业总人数[v.专业] += 1
				} else {
					xoData.专业总人数[v.专业] = 1
				}

				if (parseInt(xoData.个人最高分) < parseInt(v.分数)) {
					xoData.个人最高分 = v.分数
				}
				if (parseInt(xoData.个人最低分) > parseInt(v.分数)) {
					xoData.个人最低分 = v.分数
				}

				if (parseInt(xoData.班级最高分[v.班级] == undefined ? 0 : xoData.班级最高分[v.班级]) < parseInt(v.分数)) {
					xoData.班级最高分[v.班级] = v.分数
				}
				if (parseInt(xoData.班级最低分[v.班级] == undefined ? 100 : xoData.班级最低分[v.班级]) > parseInt(v.分数)) {
					xoData.班级最低分[v.班级] = v.分数
				}

				if (parseInt(xoData.专业最高分[v.专业] == undefined ? 0 : xoData.专业最高分[v.专业]) < parseInt(v.分数)) {
					xoData.专业最高分[v.专业] = v.分数
				}
				if (parseInt(xoData.专业最低分[v.专业] == undefined ? 100 : xoData.专业最低分[v.专业]) > parseInt(v.分数)) {
					xoData.专业最低分[v.专业] = v.分数
				}

				if (v.分数 <= 59) xoData.分段数.不及格 == undefined ? xoData.分段数.不及格 = 1 : xoData.分段数.不及格++
				if (v.分数 > 59 && v.分数 <= 69) xoData.分段数.及格 == undefined ? xoData.分段数.及格 = 1 : xoData.分段数.及格++
				if (v.分数 > 69 && v.分数 <= 79) xoData.分段数.一般 == undefined ? xoData.分段数.一般 = 1 : xoData.分段数.一般++
				if (v.分数 > 79 && v.分数 <= 89) xoData.分段数.优秀 == undefined ? xoData.分段数.优秀 = 1 : xoData.分段数.优秀++
				if (v.分数 > 89 && v.分数 <= 100) xoData.分段数.异常优秀 == undefined ? xoData.分段数.异常优秀 = 1 : xoData.分段数.异常优秀++

				xoData.科目分段数[v.科目] == undefined ? xoData.科目分段数[v.科目] = {
					不及格: 0,
					及格: 0,
					一般: 0,
					优秀: 0,
					异常优秀: 0
				} : {}
				if (v.分数 <= 59) xoData.科目分段数[v.科目].不及格 == undefined ? xoData.科目分段数[v.科目].不及格 = 1 : xoData.科目分段数[v.科目]
					.不及格++
				if (v.分数 > 59 && v.分数 <= 69) xoData.科目分段数[v.科目].及格 == undefined ? xoData.科目分段数[v.科目].及格 = 1 : xoData
					.科目分段数[v.科目].及格++
				if (v.分数 > 69 && v.分数 <= 79) xoData.科目分段数[v.科目].一般 == undefined ? xoData.科目分段数[v.科目].一般 = 1 : xoData
					.科目分段数[v.科目].一般++
				if (v.分数 > 79 && v.分数 <= 89) xoData.科目分段数[v.科目].优秀 == undefined ? xoData.科目分段数[v.科目].优秀 = 1 : xoData
					.科目分段数[v.科目].优秀++
				if (v.分数 > 89 && v.分数 <= 100) xoData.科目分段数[v.科目].异常优秀 == undefined ? xoData.科目分段数[v.科目].异常优秀 = 1 :
					xoData.科目分段数[v.科目].异常优秀++


				xoData.班级[v.班级] == undefined ? xoData.班级[v.班级] = {} : {}
				xoData.班级[v.班级][v.学期] == undefined ? xoData.班级[v.班级][v.学期] = {
					不及格: 0,
					及格: 0,
					一般: 0,
					优秀: 0,
					异常优秀: 0
				} : {}
				if (v.分数 <= 59) xoData.班级[v.班级][v.学期].不及格 == undefined ? xoData.班级[v.班级][v.学期].不及格 = 1 : xoData.班级[v
						.班级][v.学期]
					.不及格++
				if (v.分数 > 59 && v.分数 <= 69) xoData.班级[v.班级][v.学期].及格 == undefined ? xoData.班级[v.班级][v.学期].及格 = 1 :
					xoData
					.班级[v.班级][v.学期].及格++
				if (v.分数 > 69 && v.分数 <= 79) xoData.班级[v.班级][v.学期].一般 == undefined ? xoData.班级[v.班级][v.学期].一般 = 1 :
					xoData
					.班级[v.班级][v.学期].一般++
				if (v.分数 > 79 && v.分数 <= 89) xoData.班级[v.班级][v.学期].优秀 == undefined ? xoData.班级[v.班级][v.学期].优秀 = 1 :
					xoData
					.班级[v.班级][v.学期].优秀++
				if (v.分数 > 89 && v.分数 <= 100) xoData.班级[v.班级][v.学期].异常优秀 == undefined ? xoData.班级[v.班级][v.学期].异常优秀 =
					1 :
					xoData.班级[v.班级][v.学期].异常优秀++


				xoData.科目总人数[v.科目] == undefined ? xoData.科目总人数[v.科目] = 0 : {}
				xoData.科目总人数[v.科目]++

				xoData.科目总分[v.科目] == undefined ? xoData.科目总分[v.科目] = 0 : {}
				xoData.科目总分[v.科目] += parseInt(v.分数)

				xoData.科目平均分[v.科目] = (parseInt(xoData.科目总分[v.科目]) / parseInt(xoData.科目总人数[v.科目])).toFixed(0)


				xoData.班级合格数[v.班级] == undefined ? xoData.班级合格数[v.班级] = 0 : {}
				if (v.分数 > 60) xoData.班级合格数[v.班级]++

				if (v.分数 <= 59) {
					if (xoData.合格率[v.班级] == undefined) {
						xoData.合格率[v.班级] = {
							[v.科目]: {
								'不及格': 1
							}
						}
					} else {
						try {
							console.log(xoData.合格率[v.班级][v.科目].不及格)
						} catch (e) {
							xoData.合格率[v.班级][v.科目] = {
								'不及格': 1
							}
							//TODO handle the exception
						}
						xoData.合格率[v.班级][v.科目].不及格 == undefined ? xoData.合格率[v.班级][v.科目].不及格 = 1 : xoData.合格率[v.班级][v
							.科目
						].不及格++
					}
				}
				if (v.分数 > 59 && v.分数 <= 69) {
					if (xoData.合格率[v.班级] == undefined) {
						xoData.合格率[v.班级] = {
							[v.科目]: {
								'及格': 1
							}
						}
					} else {
						try {
							console.log(xoData.合格率[v.班级][v.科目].及格)
						} catch (e) {
							xoData.合格率[v.班级][v.科目] = {
								'及格': 1
							}
							//TODO handle the exception
						}
						xoData.合格率[v.班级][v.科目].及格 == undefined ? xoData.合格率[v.班级][v.科目].及格 = 1 : xoData.合格率[v.班级][v
							.科目
						].及格++
					}
				}
				if (v.分数 > 69 && v.分数 <= 79) {
					if (xoData.合格率[v.班级] == undefined) {
						xoData.合格率[v.班级] = {
							[v.科目]: {
								'中等': 1
							}
						}
					} else {
						try {
							console.log(xoData.合格率[v.班级][v.科目].中等)
						} catch (e) {
							xoData.合格率[v.班级][v.科目] = {
								'中等': 1
							}
							//TODO handle the exception
						}
						xoData.合格率[v.班级][v.科目].中等 == undefined ? xoData.合格率[v.班级][v.科目].中等 = 1 : xoData.合格率[v.班级][v
							.科目
						].中等++
					}
				}
				if (v.分数 > 79 && v.分数 <= 89) {
					if (xoData.合格率[v.班级] == undefined) {
						xoData.合格率[v.班级] = {
							[v.科目]: {
								'良好': 1
							}
						}
					} else {
						try {
							console.log(xoData.合格率[v.班级][v.科目].良好)
						} catch (e) {
							xoData.合格率[v.班级][v.科目] = {
								'良好': 1
							}
							//TODO handle the exception
						}
						xoData.合格率[v.班级][v.科目].良好 == undefined ? xoData.合格率[v.班级][v.科目].良好 = 1 : xoData.合格率[v.班级][v
							.科目
						].良好++
					}
				}
				if (v.分数 > 89 && v.分数 <= 100) {
					if (xoData.合格率[v.班级] == undefined) {
						xoData.合格率[v.班级] = {
							[v.科目]: {
								'优秀': 1
							}
						}
					} else {
						try {
							console.log(xoData.合格率[v.班级][v.科目].优秀)
						} catch (e) {
							xoData.合格率[v.班级][v.科目] = {
								'优秀': 1
							}
							//TODO handle the exception
						}
						xoData.合格率[v.班级][v.科目].优秀 == undefined ? xoData.合格率[v.班级][v.科目].优秀 = 1 : xoData.合格率[v.班级][v
							.科目
						].优秀++
					}
				}



			})
			for (let key in xoData.个人总分) {
				xoData.个人平均分[key] = xoData.个人总分[key] / 课程总数
			}
			for (let key in xoData.班级总分) {
				xoData.班级平均分[key] = xoData.班级总分[key] / xoData.班级总人数[key]
			}
			for (let key in xoData.专业总分) {
				xoData.专业平均分[key] = xoData.专业总分[key] / xoData.专业总人数[key]
			}

			console.log(xoData)

			myVue.xoData = xoData


			json.map((v, i) => {
				v.班级平均分 = xoData.班级平均分[v.班级]
				v.班级最高分 = xoData.班级最高分[v.班级]
				v.班级最低分 = xoData.班级最低分[v.班级]
				v.个人总分 = xoData.个人总分[v.姓名]
				v.个人平均分 = xoData.个人平均分[v.姓名]

				v.总科目 = {}
				json.map((v2, i2) => {
					if (v.姓名 == v2.姓名) {
						v.总科目[v2.科目] = v2.分数
					}
				})

			})

			myVue.chartdata = [{
					genre: '0-60',
					sold: xoData.分段数.不及格
				},
				{
					genre: '60-70',
					sold: xoData.分段数.及格
				},
				{
					genre: '70-80',
					sold: xoData.分段数.一般
				},
				{
					genre: '80-90',
					sold: xoData.分段数.优秀
				},
				{
					genre: '90-100',
					sold: xoData.分段数.异常优秀
				},
			]

			let chartdata2 = []
			for (let key in xoData.班级平均分) {
				chartdata2.push({
					genre: key,
					sold: xoData.班级平均分[key]
				})
			}
			myVue.chartdata2 = chartdata2

			let chartdata3 = []
			for (let key in xoData.专业平均分) {
				chartdata3.push({
					genre: key,
					sold: xoData.专业平均分[key]
				})
			}
			myVue.chartdata3 = chartdata3

			let chartdata4 = []
			for (let key in xoData.个人平均分) {
				chartdata4.push({
					genre: key,
					sold: xoData.个人平均分[key]
				})
			}
			myVue.chartdata4 = chartdata4

			// 		let chartdata5 = []
			// 		for (let key in xoData.合格率) {
			// 			for (let key2 in xoData.合格率[key]) {
			// 				chartdata5.push({
			// 					name: '不及格',
			// 					班级: key,
			// 					val: xoData.合格率[key][key2].不及格
			// 				})
			// 				chartdata5.push({
			// 					name: '及格',
			// 					班级: key,
			// 					val: xoData.合格率[key][key2].及格
			// 				})
			// 				chartdata5.push({
			// 					name: '优秀',
			// 					班级: key,
			// 					val: xoData.合格率[key][key2].优秀
			// 				})
			// 			}

			// 		}
			// 		myVue.chartdata5 = chartdata5


			let chartdata6 = []
			for (let key in xoData.合格率) {
				for (let key2 in xoData.合格率[key]) {
					chartdata6.push({
						genre: '不及格',
						sold: xoData.合格率[key][key2].不及格
					})
					chartdata6.push({
						genre: '及格',
						sold: xoData.合格率[key][key2].及格
					})
					chartdata6.push({
						genre: '中等',
						sold: xoData.合格率[key][key2].中等
					})
					chartdata6.push({
						genre: '良好',
						sold: xoData.合格率[key][key2].良好
					})
					chartdata6.push({
						genre: '优秀',
						sold: xoData.合格率[key][key2].优秀
					})

					break
				}
				break
			}
			myVue.chartdata6 = chartdata6


			let 总体分段总结最高 = 0
			try {
				if (xoData.分段数.不及格 > 总体分段总结最高) {
					总体分段总结最高 = xoData.分段数.不及格
					myVue.总体分段总结 = '不及格'
				}
				if (xoData.分段数.及格 > 总体分段总结最高) {
					总体分段总结最高 = xoData.分段数.及格
					myVue.总体分段总结 = '及格'
				}
				if (xoData.分段数.一般 > 总体分段总结最高) {
					总体分段总结最高 = xoData.分段数.一般
					myVue.总体分段总结 = '一般'
				}
				if (xoData.分段数.优秀 > 总体分段总结最高) {
					总体分段总结最高 = xoData.分段数.优秀
					myVue.总体分段总结 = '优秀'
				}
				if (xoData.分段数.异常优秀 > 总体分段总结最高) {
					总体分段总结最高 = xoData.分段数.异常优秀
					myVue.总体分段总结 = '异常优秀'
				}
			} catch (e) {
				//TODO handle the exception
			}

			return json
		}
	</script>


	<style type="text/css">
		.p4>div {
			flex-grow: 4;
			border-right: 2px solid #000000;
			padding: 10px;
		}

		.p4>div:first-child {
			border-left: 2px solid #000000;
		}

		.p6>div {
			flex-grow: 6;
			border-right: 2px solid #000000;
			padding: 10px;
		}

		.p6>div:first-child {
			border-left: 2px solid #000000;
		}
	</style>


	<style type="text/css">
		.u-font-xs {
			font-size: 22rpx;
		}

		.u-font-sm {
			font-size: 26rpx;
		}

		.u-font-md {
			font-size: 28rpx;
		}

		.u-font-lg {
			font-size: 30rpx;
		}

		.u-font-xl {
			font-size: 34rpx;
		}

		.u-flex {
			/* #ifndef APP-NVUE */
			display: flex;
			/* #endif */
			flex-direction: row;
			align-items: center;
		}

		.u-flex-wrap {
			flex-wrap: wrap;
		}

		.u-flex-nowrap {
			flex-wrap: nowrap;
		}

		.u-col-center {
			align-items: center;
		}

		.u-col-top {
			align-items: flex-start;
		}

		.u-col-bottom {
			align-items: flex-end;
		}

		.u-row-center {
			justify-content: center;
		}

		.u-row-left {
			justify-content: flex-start;
		}

		.u-row-right {
			justify-content: flex-end;
		}

		.u-row-between {
			justify-content: space-between;
		}

		.u-row-around {
			justify-content: space-around;
		}

		.u-text-left {
			text-align: left;
		}

		.u-text-center {
			text-align: center;
		}

		.u-text-right {
			text-align: right;
		}

		.u-flex-col {
			/* #ifndef APP-NVUE */
			display: flex;
			/* #endif */
			flex-direction: column;
		}
	</style>

</html>
